﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace InnovTech.Data
{
    /// <summary>
    /// Describes a behavior on a target object to execute a special logic according with the target object.
    /// </summary>
    /// <typeparam name="TTarget"></typeparam>
    /// <typeparam name="TParameter"></typeparam>
    public interface IBehavior<TTarget, TParameter>
    {
        /// <summary>
        /// Gets the target object on which the behavior should be executed.
        /// </summary>
        TTarget Target { get; }
        /// <summary>
        /// Executes on the target object.
        /// </summary>
        /// <param name="parameter"></param>
        void Execute(TParameter parameter);
    }

    public interface IBehavior<TTarget> : IBehavior<TTarget, IBehaviorParameter>
    {
    }
   
}
